home *** CD-ROM | disk | FTP | other *** search
- #include "MenuUtils.h"
-
- OSErr SetMenuItemTextByState(MenuHandle menu, short item, Boolean state, short strListID)
- {
- Str255 str;
-
- GetIndString(str, strListID, state ? 2 : 1);
- SetItem(menu,item,str);
-
- return noErr;
- }
-
- OSErr SetMenuProcPointer(short menuID, long procPointer)
- {
- Handle h = GetResource('MDrw', menuID);
-
- if (!h)
- return resNotFound;
-
- * (long *) *h = procPointer;
-
- return noErr;
- }
-
- void TickThisItem (short targetItem, MenuHandle menu)
- {
- short itemCount, x;
-
- itemCount = CountMItems(menu);
- for (x = 1 ; x <= itemCount ; x++)
- CheckItem(menu,x, x == targetItem);
- }
-
-
- Boolean GetItemEnabled(MenuHandle menu, short item)
- {
- long flags = menu[0]->enableFlags;
-
- if (!(flags & 1L))
- return false; // whole menu is disabled
-
- if ((item <= 31) && ((flags & (1L << item)) == 0))
- return false;
-
- return true;
- }
-
- void SetItemEnabled(MenuHandle menu, short item, Boolean enabled)
- {
- if (enabled)
- EnableItem(menu,item);
- else
- DisableItem(menu,item);
- }
-
- void DisableAllMenuItems (MenuHandle menu)
- {
- short itemCount, x;
-
- itemCount = CountMItems(menu);
- for (x = 1 ; x <= itemCount ; x++)
- DisableItem(menu,x);
- }
-
- Boolean ItemIsDivider(MenuHandle menu, short item);
- Boolean ItemIsDivider(MenuHandle menu, short item)
- {
- Str255 str;
-
- GetItem(menu, item, str);
- return ((str[0] == 1) && (str[1] == '-'));
- }
-
-
- OSErr ShowMenuBalloon(MenuHandle theMenu, short previousItem, short inItem, Rect *itemRect)
- {
- if (!HMGetBalloons() || (inItem== previousItem))
- return noErr;
-
- if (inItem )
- {
- Point tip;
-
- if (ItemIsDivider(theMenu, inItem))
- inItem = -1;
-
- tip.h = itemRect->right;
- tip.v = (itemRect->top + itemRect->bottom) >>1;
-
- HMShowMenuBalloon( inItem, theMenu[0]->menuID, theMenu[0]->enableFlags, 0,
- tip, itemRect, nil, 0, 0);
- }
- else
- HMRemoveBalloon();
-
- return noErr;
- }
-
-
-
-
-